<?php

	require_once '../../controller/controller.inc.php';

	try {

		$operador = new Operador();
	    
		
		$url = "../../view/home/index.php";
	
		if ( isset($_GET['method']) && $_GET['method'] == 'logout' ){
	    	unset ( $_SESSION['_usuario'] );
	    	$sucesso = "Logout realizado com sucesso.";
	    }
	    elseif ( isset($_GET['method']) &&  $_GET['method'] == 'expire' ){
	    	$erro = "Desculpe, sua sess&atilde;o expirou. Por favor, fa&ccedil;a o login novamente.";
	    	if ( isset($_GET['url']) ) $url = '../..' . $_GET['url'];
	    }
	    
	    if ( isset($_GET['method']) && $_GET['method'] == 'nucleo' ){
	    	unset ( $_SESSION['_usuario'] );
	    	$erro = "O Operador tem o Perfil comportamental Nucleo Gestor, mas não pertence a nenhum Nucleo Gestor.";
	    }
	    
	    if (isset ($_POST["Login"]))
	    {
	    	$operador->login = pg_escape_string($_POST["usuario"]);
			$operador->senha = $_POST["senha"];
			
			$usuario = Autenticar($operador);
			if (!is_null($usuario)){
				$_SESSION["_usuario"] = $usuario->usuario;
				$_SESSION["_usuarioid"] = $usuario->operadorid;
				$_SESSION['usuario'] = $usuario;
				
				$permissao = new Permissao();
				
				$_SESSION["permissoes"] = pg_fetch_all( $permissao->listar( array ( 'campo' => 'perfilid', 'operador' => '=', 'valor' => $usuario->perfilid ) ) );
				
			}
			else
				$error = "Usu&aacute;rio/Senha inv&aacute;lidos.";
				
			if ( $_POST['url'] ) $url = $_POST['url'];
	              
	    }
	    
	    if ( !empty($_SESSION["_usuario"]) )
	    	header("Location: $url");
	    	
		
	} catch( exception $e ){
		$erro = $e->getMessage();
	}
	
	function Autenticar(Operador $operador){
		//@TODO: Pesquisar operador por login
		//@TODO: comparar senhas
		
		$sql = "select * from operadores where login like '". $operador->login ."'";
		
		$result   =  TUtils::CriarResultSet($sql);
        $num  =  pg_num_rows($result);
		$usuario = new Operador();
        
		if ($num > 0){
			
				$numCampos   =  pg_num_fields($result);
                $objeto   =  pg_fetch_object($result);
				
                for ($i = 0 ; $i < $numCampos ; $i++) {
                    $nomecampo = strtolower(pg_field_name($result, $i));
                    $nomecamposet = strtolower(pg_field_name($result, $i));
                    $usuario->$nomecamposet = $objeto->$nomecampo;
                }
                
                $senha = md5($operador->senha);
                
                if ( $objeto->ativo == 'f' ){
                    throw new Exception('Desculpe, este usu&aacute;rio está desativado.');
                }
                
                if ( strcmp(strtolower($usuario->senha), $senha) != 0 )
                	throw new Exception("Usu&aacute;rio/Senha inv&aacute;lidos. Por favor, tente novamente.");
                
                if($usuario->empresaid !== NULL){
                    $perfil = $usuario->getPerfil();
                    if ($perfil->perfilcomportamentalid == PerfilComportamental::Empresa){
                        $empresa  = $usuario->getEmpresa();
                        if($empresa->totalContratosAtivos() == 0){
                            throw new Exception("Desculpe, a sua empresa não possui contratos ativos. Por favor, tente mais tarde.");
                        }
                    }
                }
                	
                return $usuario;
                
        }
        else{
        	throw new Exception("Desculpe, usu&aacute;rio n&atilde;o encontrado. Por favor, tente novamente.");
        }
	}

?>
